package org.zjx.prop.domain.enums;

import lombok.Getter;

/**
 * 道具类型枚举 - 根据梦幻西游道具系统优化
 */
@Getter
public enum ItemType {
    // 基础消耗类
    MEDICINE("药品"),         // 药品
    FOOD("烹饪"),             // 烹饪
    POTION("三级药"),         // 三级药品
    FU("符"),               // 临时属性符

    // 装备类
    WEAPON("武器"),         // 武器
    ARMOR("防具"),         // 防具
    ACCESSORY("饰品"),     // 饰品
    SPECIAL_EQUIP("灵饰"), // 灵饰
    PET_EQUIP("宠物装备"), // 灵饰

    // 功能类
    GEM("宝石"),            // 宝石
    FIVE_TREASURES("五宝"),            // 宝石
    ENHANCE("强化石"),      // 强化石
    MATERIAL("材料"),       // 打造材料
    TASK("任务道具"),      // 任务道具
    DEON_REFINING("炼妖/合成"),            // 宝石

    // 特殊类
    PET_SKILL("兽决"),     // 召唤兽技能书
    FORMATION("阵法"),     // 阵法书
    CARD("变身卡"),        // 变身卡
    TALISMAN("法宝"),     // 法宝

    TRANSFER("传送"),     // 传送道具
    MUSICAL("乐器"),     // 乐器道具

    NORMAL("普通道具");

    private final String description;

    ItemType(String description) {
        this.description = description;
    }

    public static ItemType fromItemType(String description) {
        for (ItemType slotStatus : values()) {
            if (slotStatus.description.equals(description)) {
                return slotStatus;
            }
        }
        throw new IllegalArgumentException("Unknown ItemType: " + description);
    }

    /**
     * 判断是否是装备类道具
     */
    public boolean isEquipment() {
        return this == WEAPON || this == ARMOR || this == ACCESSORY || this == SPECIAL_EQUIP;
    }

    /**
     * 判断是否是消耗类道具
     */
    public boolean isConsumable() {
        return this == MEDICINE || this == FOOD || this == POTION || this == FU;
    }

    @Override
    public String toString() {
        return name(); // 使用枚举名称
    }
}